import {
    message
} from "ant-design-vue";
import axios from 'axios'
import { setCookie } from './Cookie'
import Qs from 'qs'
let qs = Qs

const URL = 'http://localhost:3000';

export const Ax = axios.create({
    baseURL: URL,
    timeout: 5000,
    // headers: {
    //     "Content-Type": "application/json; charset=UTF-8;"
    // }
});

const codeMessage = {
    400: '发出的请求有错误，服务器没有进行新建或修改数据的操作。',
    401: '用户没有权限（令牌、用户名、密码错误）。',
    403: '用户得到授权，但是访问是被禁止的。',
    404: '发出的请求针对的是不存在的记录，服务器没有进行操作。',
    406: '请求的格式不可得。',
    410: '请求的资源被永久删除，且不会再得到的。',
    422: '当创建一个对象时，发生一个验证错误。',
    500: '网络请求超时，请稍后重试~',
    502: '网关错误。',
    503: '服务不可用，服务器暂时过载或维护。',
    504: '网关超时。'
};

const errorHandler = error => {
    const {
        response = {}
    } = error;

    // 全局数据错误提示
    if (response.status == 500 && response.data.msg) {
        message.error(response.data.msg)
    } else { // 系统错误提示
        const errortext = codeMessage[response.status] || response.statusText;
        message.error(errortext, 'error', `请求错误 ${response.status}`);
    }

    return Promise.reject(error);
};

// 请求拦截器
Ax.interceptors.request.use(config => {
 
    config.headers = {
        uid:1
    }
    // console.log('请求配置项：', config)
    return config
}, error => {
    massage.error('请求失败')
    return Promise.reject(error)
})

// 响应拦截器
Ax.interceptors.response.use(response => {
    let res = response.data
    return res
}, errorHandler)

// 封装 GET 方法并导出
export function get(url, params) {
    return Ax.get(url, {
        params,
    })
}

// 封装 postJSON 方法（发送json格式数据）
export function postJSON(url, data) {
    return Ax.post(url, data)
}

// 封装 post 方法（发送表单格式数据）
export function post(url, data) {
    return Ax.post(url, qs.stringify(data))
}

export default Ax